package com.ssy.lingxi.contract.esign.request;

import lombok.Data;

@Data
public class BaseSignFieldRequest {

    /**
     * 必填: 是
     * 流程id
     */
    protected String flowId;

    @Data
    public static class BaseSignfield {

        /**
         * 必填: 是
         * 文件fileId
         */
        protected String fileId;
        /**
         * 必填: 否
         * 签署顺序，默认1,且不小于1，顺序越小越先处理
         */
        protected Integer order;
        /**
         * 必填: 是 (添加手动盖章签署区非必填)
         * 签署区位置信息, （signType为1时, 页码和XY坐标不能为空, signType为2时, 页码和Y坐标不能为空）
         */
        protected PosBean posBean;

        /**
         * 必填: 否
         * 是否需要添加签署日期，0-禁止 1-必须，默认0
         */
        protected Integer signDateBeanType;

        /**
         * 必填: 否
         * 签章日期信息
         */
        protected SignDateBean signDateBean;
        /**
         * 必填: 否
         * 印章id
         * (1)开通了实名签署，该字段只支持个人签署场景指定一个印章
         * (2)没有开通实名签署，同时支持企业主体签署场景以及个人签署场景指定一个印章
         */
        protected String sealId;
        /**
         必填: 否
         * 签署类型，0-不限，1-单页签署，2-骑缝签署，默认1
         */
        protected Integer signType;

        /**
         * 必填: 否
         * 第三方业务流水号id，保证相同签署人、相同签约主体、相同签署顺序的任务，对应的第三方业务流水id唯一，默认空
         * 如果传了该参数，【签署人签署完成异步通知】中的thirdOrderNo参数会取这里的值
         */
        protected String thirdOrderNo;

        @Data
        public static class PosBean {

            /**
             * 必填: 是
             * 页码信息，当签署区signType为2时, 页码可以'-'分割, 其他情况只能是数字
             */
            protected String posPage;
            /**
             * 必填: 否
             * x坐标，默认空
             */
            protected Float posX;
            /**
             * 必填: 是
             * y坐标
             */
            protected Float posY;

            /**
             * 必填: 否
             * 签署区宽，默认印章宽度
             */
            protected Float width;
        }

        @Data
        public static class SignDateBean {
            /**
             * 必填: 否
             * 签章日期字体大小,默认12
             */
            protected Integer fontSize;
            /**
             * 必填: 否
             * 签章日期格式，yyyy年MM月dd日
             */
            protected String format;
            /**
             * 必填: 否
             * 页码信息，当signDateBeanType为1时，签章日期默认展示在签署页面左下角位置，
             * 如需指定日期盖章位置，则需传入日期盖章页码和坐标（日期页码与印章页码需相同）
             */
            protected Integer posPage;
            /**
             * 必填: 否
             * x坐标，默认0（如果X和Y坐标不传入，签章日期展示在签署页左下角）
             */
            protected Float posX;
            /**
             * 必填: 否
             * y坐标，默认0（如果X和Y坐标不传入，签章日期展示在签署页左下角）
             */
            protected Float posY;
        }
    }
}
